
#ifdef FLASH_CODE_HEADER

static const uint32_t flash_code_STM32F4XX_OTP[54] = 
{
    0XE00ABE00,0X062D780D,0X24084068,0XD3000040,0X1E644058,0X1C49D1FA,0X2A001E52,0X4770D1F2,
    0X49254826,0X49266041,0X68016041,0X0F090709,0X68C16001,0X431122F0,0X694060C1,0XD4060680,
    0X49204821,0X21066001,0X49206041,0X20006081,0X481A4770,0X05426901,0X61014311,0X47702000,
    0X47702000,0X4D15B570,0X08891CC9,0X008968EB,0X433326F0,0X230060EB,0X4B15612B,0X692CE017,
    0X612C431C,0X60046814,0X03E468EC,0X692CD4FC,0X00640864,0X68EC612C,0X0F240624,0X68E8D004,
    0X60E84330,0XBD702001,0X1F091D00,0X29001D12,0X2000D1E5,0X0000BD70,0X45670123,0X40023C00,
    0XCDEF89AB,0X00005555,0X40003000,0X00000FFF,0X00000201,0X00000000,
};

static const program_target_t flash_algo_STM32F4XX_OTP =
{
    0X20000021,  // Init
    0X20000053,  // UnInit
    0X20000020,  // EraseChip
    0X20000061,  // EraseSector
    0X20000065,  // ProgramPage

    {
        0x20000001,  // BKPT : start of blob + 1
        0x20000C00,  // RSB  : address to access global/static data
        0x20001000,  // RSP  : stack pointer 
    },

    0x20000400,                      // mem buffer location
    0x20000000,                      // location to write prog_blob in target RAM
    sizeof(flash_code_STM32F4XX_OTP),       // prog_blob size
    flash_code_STM32F4XX_OTP,               // address of prog_blob 
    0x00000400,                      // ram_to_flash_bytes_to_be_written
};

#endif

#ifdef FLASH_CODE_TABLE
&flash_algo_STM32F4XX_OTP
#endif

